package day21.homework;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * 演示ArrayList的多种遍历方式
 * 包括普通for循环、增强for循环、Iterator、Lambda表达式、方法引用和Stream API
 */
public class test4 {
    public static void main(String[] args) {
        // 创建ArrayList并存储1~5
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        
        // 方式1: 使用普通for循环遍历
        // 通过索引访问每个元素，是最基础的遍历方式
        System.out.println("方式1: 使用普通for循环遍历");
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i));
        }

        System.out.println();
        
        // 方式2: 使用增强for循环遍历
        // 简化版的for循环，适用于不需要索引的场景
        System.out.println("方式2: 使用增强for循环遍历");
        for (Integer num : list) {
            System.out.print(num);
        }

        System.out.println();
        
        // 方式3: 使用Iterator遍历
        // 通过迭代器遍历，可以在遍历过程中安全地删除元素
        System.out.println("方式3: 使用Iterator遍历");
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next());
        }
        
        System.out.println();

        // 方式4: 使用Lambda表达式遍历
        // 使用forEach方法结合Lambda表达式进行遍历
        System.out.println("方式4: 使用Lambda表达式遍历");
        list.forEach(num -> System.out.print(num));

        System.out.println();
        
        // 方式5: 使用forEach方法和方法引用
        // 使用方法引用简化Lambda表达式，更加简洁
        System.out.println("方式4: 使用forEach方法和方法引用");
        list.forEach(System.out::print);

        System.out.println();
        
        // 方式6: 使用Stream API遍历
        // 将集合转为流，然后使用流的forEach方法进行遍历
        System.out.println("方式6: 使用Stream API遍历");
        list.stream().forEach(System.out::print);
    }
}